// index.js
// 获取app实例看一下
const app = getApp()
// 页面js中最少得有Page({ })(这是必须的)
Page({
  data: {
    name: '大聪明',
    msg: '今天算是复习',
    students: [],
    num: 5,
    arr: [1, 2, 3, 4, 5],
    show: true,
    isLogin: true
  },
  // 设置本地存储
  setStorage() {
    // vue中存对象到storage中得利用JSON.stringify转成json字符串来存
    // 小程序里可以直接存对象
    wx.setStorageSync('name', '轩晓倩')
    wx.setStorageSync('user', {
      name: '杨惠敏',
      age: 16
    })
  },
  // 读取本地的存储
  getStorage() {
    const name = wx.getStorageSync('name')
    const user = wx.getStorageSync('user')
    console.log('name:', name);
    console.log('user', user);
  },
  // 删除本地的存储
  removeStorage() {
    wx.removeStorageSync('name')
  },
  // 清空本地缓存
  clearStorage() {
    wx.clearStorageSync()
  },
  toggle() {
    // 切换 show的值
    this.setData({
      show: !this.data.show
    })
  },
  // 调一个接口去测试wxwx.request()
  // 获取学生列表
  // 1. 在发接口之前显示loading状态
  // 2. 无论成功失败都得隐藏loading状态
  getStudentList() {
    // 另一种解决this的方式 that可以在回调函数中使用(古老的方案)
    // let that = this
    // 发送之前给loading提示框
    wx.showLoading({
      title: '正在加载...',
      mask: true
    })
    wx.request({
      url: 'https://mock.boxuegu.com/mock/3293/students',
      method: 'GET',
      success: (res) => {
        console.log('学生列表数据', res)
        this.setData({
          // 更新students数组
          students: res.data.result
        })
      },
      // complete 接口请求无论成功或失败都执行的回调函数
      complete() {
        // 隐藏提示框
        wx.hideLoading()
      }
    })
  },
  // 提交表单验证
  submitForm() {
    console.log(this.data.name);
    // 验证姓名只能为汉字
    const reg = /^[\u4e00-\u9fa5]{2,5}$/
    // 验证结果 正则表达式的test方法如果不符合正则就返回false ,符合就返回true
    const valid = reg.test(this.data.name.trim())
    // 提示验证结果
    if (!valid) {
      return wx.showToast({
        title: '姓名只能为2到5位的中文',
        icon: 'none'
      })
    }
    // 符合条件提交表单
    console.log('提交表单了');
  },
  // onLoad() 只执行一次
  onLoad() {
    console.log('页面加载完毕');
    console.log('我是app里的东西', app);
    // 页面加载完成 调学生列表接口
    this.getStudentList()
  },
  onReady() {
    console.log('首页初次渲染完成');
  },
  onShow() {
    console.log('页面显示了');
  },
  onHide() {
    console.log('页面隐藏了');
  },
  onUnload() {
    console.log('页面即将卸载');
  }
})